SIFT 特征提取与匹配

图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的M×N×3的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们的关系。
特征点主要指的就是能够在其他含有相同场景或目标的相似图像中以一种相同的或至少非常相似的不变形式表示图像或目标。因此图像特征点具有两点基本要求:

  1. 差异性:特征点应该呈现出区别于非特征点的明显特征
  2. 重复性:对应同一三维点的特征点应该在不同视角中被重复检测到

Harris Corner Detector

harris 基本思想是在角点小的窗口内,如果往任何方向移动窗口都会引起比较大的灰度变化,那么这个点就可以认为是角点。

反映在数学上如下:

其中$x, y$为窗口内像素坐标,$u, v$为窗口移动,$w(x, y)$为窗口内权重,可以使用窗口内为1窗口外为0,或者使用高斯函数为权重关系。

对上式泰勒展开忽略高阶项:

其中Harris矩阵:

其中对H特征值分解得到特征值$\operatorname{SVD}(\boldsymbol{H})=\boldsymbol{U} \sum \boldsymbol{V}, \quad\left(\lambda_{1}, \lambda_{2}\right), \lambda_{1}>\lambda_{2}$ :

其特征值反应了变化最快和最慢的方向。

  • $\lambda_{1} \approx \lambda_{2} \approx 0$ 像素点在光滑的区域(flat)
  • $\lambda_{1}>0, \lambda_{2} \approx 0$ 像素点在边缘区域(edge)
  • $\lambda_{1}, \lambda_{2}>0$ 像素在角点区域(corner)

因此寻找角点的任务就变成了计算H矩阵并判断特征值的情况。特征值满足一定要求就认为是角点。

因此提出Harris角点准则:

提出Harris角点准则的原因主要是为了避免计算特征值分解。只有当$\lambda_1 , \lambda_2$同时取得最大值时, R才会取得较大值。其中k越小,检测算法越敏感。

实际在使用中会进行非极大值抑制,避免特征点密集重复。

最后harris corner算法如下, 其中$G_{\sigma}^{\times}$为高斯卷积核:

Laplacian of Gaussian (LOG) Detector

Scale Invariant Feature Transform(SIFT)

SIFT(Scale-invariant feature transform)是一种检测局部特征算法,该算法通过求一幅图中的特征点(interest points,or corner points)及其有关scale 和 orientation 的描述子得到特征并进行图像特征点匹配,获得了良好效果。
SIFT特征不只具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。


References

[1] http://www.cse.psu.edu/~rtc12/CSE486/lecture06.pdf
[2] https://en.wikipedia.org/wiki/Harris_Corner_Detector
[3] http://www.cs.utexas.edu/~grauman/courses/fall2009/papers/local_features_synthesis_draft.pdf
[4] Distinctive Image Features from Scale-Invariant Keypoints